package com.shujia.service;

import com.shujia.bean.User;
import com.shujia.dao.UserDao;
import com.shujia.dao.UserDaoImpl;

public class UserServiceImpl implements UserService {

    //构建持久层对象
    private UserDao userDao = new UserDaoImpl();

    /**
     * 登录的方法
     *
     * @param username
     * @param password
     * @return
     */
    @Override
    public String login(String username, String password) {

        //1、调用持久层通过用户名查询用户的方法
        User user = userDao.queryUserByUsername(username);

        //2、判断用户是否存在
        if (user == null) {
            return "用户不存在";
        }

        //3、判断密码是否正确
        if (password == null || !password.equals(user.getPassword())) {
            return "密码错误，请重新登录";
        }

        //4、返回结果
        return "登录成功";

    }

    /**
     * 注册的方法
     *
     * @param username
     * @param password
     * @param nowPassword
     * @return
     */
    @Override
    public String register(String username, String password, String nowPassword) {

        //1、判断密码是否一致
        if (password == null || !password.equals(nowPassword)) {
            return "密码不一致";
        }

        //2、调用通过用户名查询用户的方法
        User user = userDao.queryUserByUsername(username);

        //3、判断用户是否存在
        if (user != null) {
            return "用户已存在";
        }

        //4、将用户插入到数据库
        User newUser = new User(username, password);
        userDao.insert(newUser);

        //5、返回结果
        return "注册成功";

    }

    /**
     * 通过用户修改密码
     *
     * @param username
     * @param oldPassword
     * @param newPassword
     * @param nowPassword
     * @return
     */
    @Override
    public String modifyPasswordByUsername(String username, String oldPassword, String newPassword, String nowPassword) {

        //1、判断原用户名和密码是否正确
        User user = userDao.queryUserByUsername(username);

        //判断用户名是否存在
        if (user == null) {
            return "用户不存在";
        }

        //判断原密码是否正确
        if (!oldPassword.equals(user.getPassword())) {
            return "原密码错误";
        }

        //2、判断新密码是否一致
        if (newPassword == null || !newPassword.equals(nowPassword)) {
            return "新密码不一致";
        }

        //3、判断新密码与原密码是否重复
        if (oldPassword.equals(newPassword)) {
            return "新密码与原密码重复，请重新输入";
        }

        //4、修改密码
        userDao.modifyPasswordByUsername(username, newPassword);

        //5、返回结果
        return "密码修改成功";

    }
}
